package cn.iocoder.yudao.module.project.controller.admin.internalcode.vo;

import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 内码信息分页 Request VO")
@Data
@ToString(callSuper = true)
public class InternalCodePageReqVO extends PageParam{
    private static final Integer PAGE_NO = 1;
    private static final Integer PAGE_SIZE = 10;

    /**
     * 每页条数 - 不分页
     *
     * 例如说，导出接口，可以设置 {@link #pageSize} 为 -1 不分页，查询所有数据。
     */
    public static final Integer PAGE_SIZE_NONE = -1;

    @Schema(description = "页码，从 1 开始", requiredMode = Schema.RequiredMode.REQUIRED,example = "1")
    @NotNull(message = "页码不能为空")
    @Min(value = 1, message = "页码最小值为 1")
    private Integer pageNo = PAGE_NO;

    @Schema(description = "每页条数，最大值为 1000", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
    @NotNull(message = "每页条数不能为空")
    @Min(value = 1, message = "每页条数最小值为 1")
    @Max(value = 1000, message = "每页条数最大值为 1000")
    private Integer pageSize = PAGE_SIZE;

    @Schema(description = "内码编号", example = "23488")
    private String id;

    @Schema(description = "内码名称", example = "李四")
    private String name;

    @Schema(description = "出库单号")
    private String exCode;

    @Schema(description = "订单编号")
    private String orderCode;

    @Schema(description = "订单详情id")
    private String orderDetailId;

    @Schema(description = "型号", example = "1")
    private String type;

    @Schema(description = "物料编号")
    private String materialCode;

    @Schema(description = "所有箱码,用英文逗号分隔")
    private String cartonCodes;

    @Schema(description = "批次号")
    private String batchNumber;

    @Schema(description = "批次校验序号")
    private String batchCheckNumber;

    @Schema(description = "导入时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] operatingTime;

    @Schema(description = "操作员", requiredMode = Schema.RequiredMode.REQUIRED)
    private String operator;

    @Schema(description = "备注", example = "你猜")
    private String remark;

    @Schema(description = "重量(g)")
    private Double weight;

    @Schema(description = "重量状态(0:正常:1过轻,2:过重)", example = "2")
    private Integer weightStatus;

    @Schema(description = "刚性")
    private String rigidity;

    @Schema(description = "刚性状态(0:正常:1异常)", example = "2")
    private Integer rigidityStatus;

    @Schema(description = "平衡")
    private String balance;

    @Schema(description = "平衡状态(0:正常:1异常)", example = "2")
    private Integer balanceStatus;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

    @Schema(description = "测试工位ID")
    private Integer testWorkstationId;

    @Schema(description = "二次平衡工位ID")
    private Integer balanceTwiceWorkstationId;

    @Schema(description = "测试工位用户ID")
    private Integer testWorkstationUserId;

    @Schema(description = "二次平衡工位用户ID")
    private Integer balanceTwiceWorkstationUserId;

    @Schema(description = "数据来源(空或1:默认,2:派工单)", example = "2")
    private Integer dataSource;

    @Schema(description = "测试称重")
    private Double testWeight;

    @Schema(description = "二次平衡称重")
    private Double balanceTwiceWeight;

    private Integer workstationId;

    private String[] operatorTimeReq;

    private String startTime;

    private String endTime;

    private String flex;

    private Integer len;

    private String finishStatus;

    private String orderType;

    private String channel;

    private String cacheOrderCode;

    private String labelType;

    private Long labelTypeValue;

    private Long loginUserId;

}
